package com.lekang.le.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.lekang.le.mapper.BedMapper;
import com.lekang.le.domain.Bed;
import com.lekang.le.service.IBedService;

/**
 * 床位信息Service业务层处理
 * 
 * @author szh
 * @date 2025-10-14
 */
@Service
public class BedServiceImpl implements IBedService 
{
    @Autowired
    private BedMapper bedMapper;

    /**
     * 查询床位信息
     * 
     * @param id 床位信息主键
     * @return 床位信息
     */
    @Override
    public Bed selectBedById(Long id)
    {
        return bedMapper.selectBedById(id);
    }

    /**
     * 查询床位信息列表
     * 
     * @param bed 床位信息
     * @return 床位信息
     */
    @Override
    public List<Bed> selectBedList(Bed bed)
    {
        return bedMapper.selectBedList(bed);
    }

    /**
     * 新增床位信息
     * 
     * @param bed 床位信息
     * @return 结果
     */
    @Override
    public int insertBed(Bed bed)
    {
        // 1. 校验必填参数
        if (bed.getRoomId() == null) {
            throw new RuntimeException("房间ID不能为空");
        }
        if (bed.getBedNo() == null || bed.getBedNo().trim().isEmpty()) {
            throw new RuntimeException("床位号不能为空");
        }

        // 2. 构建查询条件：同一房间+相同床位号+未删除
        Bed queryBed = new Bed();
        queryBed.setRoomId(bed.getRoomId());
        queryBed.setBedNo(bed.getBedNo().trim());
        queryBed.setIsDeleted(0L); // 排除已逻辑删除的记录

        // 3. 执行查询并判断是否重复
        List<Bed> existingBeds = bedMapper.selectBedList(queryBed);
        if (existingBeds != null && !existingBeds.isEmpty()) {
            throw new RuntimeException("当前房间已存在相同床位号：" + bed.getBedNo());
        }

        // 4. 执行新增
        return bedMapper.insertBed(bed);
    }

    /**
     * 修改床位信息
     * 
     * @param bed 床位信息
     * @return 结果
     */
    @Override
    public int updateBed(Bed bed)
    {
        return bedMapper.updateBed(bed);
    }

    /**
     * 批量删除床位信息
     * 
     * @param ids 需要删除的床位信息主键
     * @return 结果
     */
    @Override
    public int deleteBedByIds(Long[] ids)
    {
        return bedMapper.deleteBedByIds(ids);
    }

    /**
     * 删除床位信息信息
     * 
     * @param id 床位信息主键
     * @return 结果
     */
    @Override
    public int deleteBedById(Long id)
    {
        return bedMapper.deleteBedById(id);
    }
}
